深入分析能带结构: Origin画能带图
本文转载自 VASPKIT 微信公众号
一句话提要:用VASPKIT是计算能带结构图最简单的方式,计算结果可以用Origin画图,也可以用Pymatgen画图。本文讲解用Origin画图方法。
使用vaspkit 21功能得到的PBAND_.dat文件可以直接用origin画图得到投影能带,PBAND_.dat的文件格式如下:
#K-Path Energy s py ... tot
#Band-index 1
0.000 -14.278 0.275 0.000 0.005 ... 0.281
0.060 -14.268 0.276 0.000 0.005 ... 0.281
0.120 -14.239 0.276 0.000 0.005 ... 0.281
0.180 -14.190 0.277 0.000 0.005 ... 0.282
0.240 -14.123 0.278 0.000 0.005 ... 0.284
0.300 -14.039 0.280 0.000 0.005 ... 0.285
0.360 -13.938 0.281 0.000 0.005 ... 0.288
0.420 -13.823 0.283 0.000 0.005 ... 0.290
...
#Band-index 2
3.114 -13.063 0.315 0.000 0.000 ... 0.316
3.045 -13.056 0.315 0.000 0.000 ... 0.316
...
#Band-index 3
0.000 -5.798 0.018 0.000 0.125 ... 0.143
0.060 -5.787 0.018 0.000 0.125 ... 0.143
...
第一列是K-path走过的距离,即能带图的横坐标,有几条能带(NBANDS)就会有几套数据。
第二列是能带的能量。
第三列 - 倒数第二列是,每个轨道在能带上的投影。
最后一列是原子/元素在能带上的投影。VASPKIT(211)是原子的投影,(212)是元素的投影,相当于体系中该元素的所有原子,(213)可以按照自己的需求指定几个原子或几种元素的集合。
这个文件可以直接导入到origin里:
选中前两行画线模型就能得到标准的能带图:
在能带图上找到高对称点的位置,可以在 VASPKIT 自动生成的 KLABELS 文件中得到,
K-Label K-Coordinate in band-structure plots
GAMMA 0.000
M 1.139
K 1.797
GAMMA 3.113
1.139是M点,1.797是K点,3.113是Gamma点。单位都是埃-1,在Origin前两列里添加如下几行,标记出高对称点位置。
1.14 -20
1.14 10
1.798 -20
1.798 10
也可以通过数line-mode的点的个数标记高对称点的位置,比如KPOINTS的第二行50,代表每两个高对称点之间插入50个点。在origin里每50行就有一个对应的高对称点。
K-Path Generated by VASPKIT
50
Line-Mode
Reciprocal
0.0000000000 0.0000000000 0.0000000000 GAMMA
0.5000000000 0.0000000000 0.0000000000 M
0.5000000000 0.0000000000 0.0000000000 M
0.3333333333 0.3333333333 0.0000000000 K
0.3333333333 0.3333333333 0.0000000000 K
0.0000000000 0.0000000000 0.0000000000 GAMMA
调整坐标范围,一般我们关心的是费米能级附近的态。得到能带图效果如下:
右键点击Origin左上角的“1”,在plot setup里可以加入指定的 轨道成分/原子/元素 的投影到能带图上,俗称projected band structure或fat band structure.
选中 Bubble,然后 A 列和 B 列数据作为 x 轴和 y 轴的数据,并指定一列轨道或最后一列(tot) 作为投影的权重,点击 add->ok。然后调整bubble点的scaling和颜色即可。
这张图是MoS2的Mo的投影能带,可见在VBM和CBM处,Mo元素所占权重很大,相应的S占的权重就少。注意这里的能带是没考虑自旋轨道耦合(SOC)的,如果考虑SOC,能带结构会发生改变。
如果想要看在VBM和CBM处的轨道图形,可以用VASP自带的parital charge功能,也可直接运行VASPKIT 511功能得到这两个位置的实空间波函数。
我们需要输入的信息是这两个位置的K点序号和band序号,这两个信息可以从 IBZKPT 文件和 EIGENVAL 文件中读取,从能带图上可以读出这个点正好是 ‘K’ ,前面有两条线的路径Gamma -> M -> K,每条线上有20个点(KPOINTS文件的第二行),所以VBM和CBM处在第41个点的位置。Band的序号要根据占据数来读取,EIGENVAL 文件中该点的最高占据能带是13号,最低非占据能带是14号。在运行VASPKIT的时候依次选择 511 -> 41 -> 13 和 511 -> 41 -> 14 即可。
0.3333333E+00 0.3333333E+00 0.0000000E+00 0.1666667E-01
1 -62.527256 1.000000
2 -36.782055 1.000000
3 -36.739875 1.000000
4 -36.624610 1.000000
5 -13.641115 1.000000
6 -13.567346 1.000000
7 -7.084097 1.000000
8 -6.272123 1.000000
9 -5.748132 1.000000
10 -5.251686 1.000000
11 -4.558188 1.000000
12 -3.850084 1.000000
13 -1.714496 1.000000
14 -0.037148 0.000000
15 1.372039 0.000000
16 1.842932 0.000000
17 3.168293 0.000000
18 5.547570 0.000000
19 5.927476 0.000000
20 7.925026 0.000000
511
+-------------------------- Warm Tips --------------------------+
Open Real-Space WaveFunction Files with VESTA/VMD Package.
+---------------------------------------------------------------+
Which K-POINT do you want to plot? (1<= ikpt <=60)
------------>>
41
Which BAND do you want to plot? (1<= iband <=20)
------------>>
13
+-------------------------- Warm Tips --------------------------+
Current Version Only Support the Stardard Version of VASP code.
+---------------------------------------------------------------+
-->> (01) Reading the header information in WAVECAR file...
+--------------------- WAVECAR Header --------------------------+
SPIN = 1
NKPTS = 60
NBANDS = 20
ENCUT = 500.00
Coefficients Precision: Complex*8
Maximum number of G values: GX = 6, GY = 6, GZ = 34
Estimated maximum number of plane-waves: 5127
+---------------------------------------------------------------+
-->> (02) Start to Post-Process Wavefunctions...
-->> (03) Reading Structural Parameters from POSCAR File...
-->> (04) Written WF_REAL_B0013_K0041.vasp File!
-->> (05) Written WF_IMAG_B0013_K0041.vasp File!
得到的文件WF_REAL_B0013_K0041.vasp,WF_REAL_B0014_K0041.vasp 拖入VESTA里作图。这里看到CBM主要是横向分布的,而VBM波函数是横向和纵向分布都有的。
综上,可见用 Origin 绘制能带图是比较繁琐的事情,如果我们想要一下次绘制100 种材料的能带图就难以完成了。这就需要借助一些高通量计算的程序,比如 Pymatgen 绘制能带结构图。之后的文章种会讲解如何用 pymatgen 绘制各种的能带图和布里渊区。
学习更多固体与表面理论计算相关内容,欢迎参加第四届研之成理固体与表面理论计算初级培训班(杭州,20190805-20190808);详情请见:研之成理固体与表面理论计算「青年学者」论坛暨理论计算初级培训班开始注册。咨询请联系陈老师,手机:18969084992(微信同号)